<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use DB;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class CateController extends Controller
{
    // 隐式控制器需要在每个方法前 声明请求方式
    public function getIndex()
    {
        echo '分类的列表';
        $this->upload();  //内部调用的方法不用声明
    }

    // public function postInsert()
    // {
    //     echo '添加';
    // }

    protected function upload()
    {
        echo '图片上传';
    }

    public function getEdit(Request $request)   //laravel中参数约束必须写
    {
        // var_dump($request->all());  //获取所有参数
        // dd($request->all());  //dd后边的内容不执行
        
        // echo $request->path();  //请求的路径

        // $res = $request->is('cate/edit');  //检测路径

        // echo $request->url();  //获取完整url

        // echo $request->method(); //获取请求方法

        // $res = $request->isMethod('post');  //检测方法

        $res = \Input::get('id');  //获取指定类型参数
        dd($res);
    }

    public function getInsert(Request $request)
    {
        $res = $request->input('name');    //基本获取 
        $res = $request->input('name','Michael');  //设置默认值
        $res = $request->has('name');   //检查参数是否存在
        $res = $request->all();  //提取所有参数
        $res = $request->only(['name']);  //只提取某部分参数
        $res = $request->except(['name']);  //提取  除了...

        dd($res);
    }

    // 显示添加用户页面
    public function getAdd()
    {   
        // 解析模板
        return view('admin.cate.add');
    }

    // 处理添加用户的数据
    public function postInsert(Request $request)
    {
        // dd($request->all());
        // 数据验证
        // if(!$request->has('username')){
        //     return back(); //回滚
        // }

        // $request->flash();  //将所有的请求参数存入闪存中
        
        // $request->flashOnly('username','password');  //将部分参数存入闪存中

        $request->flashExcept('username');   //除了某字段  将其他存入闪存中

        // return back()->withInput();  //回滚  闪存
        return back();
    }

    // 文件上传
    public function postUpload(Request $request)
    {
        // dd($request->all());
        // 检测是否有文件上传  移动上传文件
        if($request->hasFile('pic')){

            $suffix = $request->file('pic')->getClientOriginalExtension(); //获取文件后缀名
            
            $name = md5(time().rand(0,99));//随机文件名
            
            $request->file('pic')->move('./upload/',$name.'.'.$suffix);
        }else{
            echo '没有文件上传';
        }
    }

    // coolie设置
    public function getSetcookie()
    {
        // \Cookie::queue('name','imissyou',10); //时间  分钟
        return response('hello world')->withCookie('uid',10,10);
    }

    public function getGetcookie(Request $request)
    {
        // echo $request->cookie('uid');
        echo \Cookie::get('uid');
    }

    // 响应
    public function getResponse()
    {
        // return 'IMissYou';  //返回字符串

        // return response('abcd')->withCookie('id',10,20);  //设置cookie

        // return response()->view('admin.cate.add');  //显示模板

        // return response()->json(['a'=>100,'b'=>200]);  //返回json格式的字符串

        // return response()->download('./upload/gakki.jpg');  //下载文件

        // return redirect('cate/index');  //页面跳转
    }

    // 模板解析
    public function getMuban()
    {
        $love = "<span style='color:red'>ILoveYou</span>";
        // 分配数据 解析模板
        return view('admin.cate.index',[
            'title'=>'数据分配',
            'name'=>'abcdeefg',
            'love'=>$love
            ]);

        // 解析模板
        // return view('admin.cate.index');
    }

    // blade 模板引擎
    public function getInc()
    {
        return view('admin.test.index');
    }

    // blade继承
    public function getEx()
    {   
        // 数据查询
        // $res = DB::table('user')->select('id','username as uname')->get();  //查询所有
        // echo $res[0]->username;  //查询单条里的信息
        // $res = DB::table('user')->first();  //查询第一条
        // dd($res);
        // $user = DB::table('user')->where('username','laosiji')->first();  //结果为数组
        // $user = DB::table('user')->where('username','laosiji')->get();   //结果为对象
        // $email = DB::table('user')->where('username','laosiji')->value('email');  //获取单个
        // dd($email);

        //Laravel 5 中需要开启QueryLog
        // DB::connection()->enableQueryLog();

        // $titles = DB::table('user')->lists('username');  //获取所有ID
        // dd($titles);

        // DB::table('user')->select('id','username as uname')->get();

        //这里为查询操作
        // dd(DB::getQueryLog());

        
        /*事务操作*/
        DB::beginTransaction();  //开启事务

        $res = DB::update('update user set account=account-20 where id = ?',[2]);
        if(!$res){
            DB::rollBack();
            dd('事务执行失败1');
        }
        $res = DB::update('update user set account=account+20 where id = ?',[1]);
        if(!$res){
            DB::rollBack();
            dd('事务执行失败2');
        }

        DB::commit();  //提示提交
        echo "事务执行成功";
        return view('admin.ex.index');
    }









}
